namespace SimpleFactory.FactoryMethod
{
    /*
     * 工厂方法模式
     * 对单工厂进行封装，从而让客户端只用依赖一个抽象的工厂即可
     * 可以看见系统用到最后都是向 构建更高抽象级别 前进
     * 这反应了人类底层思维，股市，政府，军队，食品，方方面面都有这思维的影子
     */
    public interface IFactory
    {
        IProduct Create();
    }

    /*
     ! 客户端还是会依赖具体
     */
    public class FactoryA : IFactory
    {
        public IProduct Create()
        {
            return new ProductA();
        }
    }

    public class FactoryB : IFactory
    {
        public IProduct Create()
        {
            return new ProductB();
        }
    }
}